As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems and methods for controlling data transfer to and from a redundant array of independent disks (RAID) memory storage system are known in the art. A RAID system is a data storage system wherein data is distributed across a group of hard disk drive storage devices functioning as a small storage unit. Often, information stored on each disk is duplicated on other disks in the array, creating redundancy to ensure no information is lost if disk failure occurs. Also, commonly, parity is calculated across a set of information stored on disks of the array. RAID systems achieve redundancy in two methods—mirroring and parity. Both mechanisms allow for regeneration of data in the event of disk failure or unreadable disks. The I/O operations on a storage device (hard disk drive) is accessed at the granularity of the size of a logical block and the logical blocks are addressed by logical block address.
In current conventional hard drive storage device implementations the logical block size and the physical block size are the same. While drives with 4096 byte block size are being introduced now, for backward compatibility with existing software these new drives are also available with 512 byte logical block size emulation. In such an emulation mode, each 4096 byte physical block contains eight 512 byte logical blocks. A conventional 4096 byte physical block drive that is emulating a 512 byte logical block size will report an error for a 512 byte logical block address (LBA) that has a medium error when that 512 byte block is read as part of an I/O operation. To report the error, the drive sends sense data with information of the location of the 512 byte logical block in which the medium error was discovered, and does not contain any information about other logical blocks which may have errors within the same 4096 byte physical block. Further information on Sense Data may be found in Section 4.5 of “Information technology-SCSI Primary Commands-4 (SPC-4),” Project T10/1731-D (Revision 36e, 24 Aug. 2012) of the Accredited Standards Committee INCITS (InterNational Committee for Information Technology Standards), Reference number ISO/IEC 14776-454: 200x, ANSI INCITS.***:200x (Aug. 24, 2012), which is incorporated herein by reference.
FIG. 1 illustrates a conventional technique 100 implemented by a redundant array of independent disks (RAID) controller for handling medium error reporting for a RAID data storage system that includes hard drive storage devices having 4096 byte physical block size that are operating with 512 byte logical block size emulation. As shown, methodology begins in step 102 where the storage devices are discovered by the RAID controller as being 512 byte emulated for the input/output (I/O) operations. Next in step 104, the RAID controller runs I/O to a 512 byte logical block of the given storage device (hard drive). In step 106, an individual disk controller of the storage device detects one or more storage medium errors on the current read operation for the current 512 byte logical block. In step 108, the storage device disk controller reports the detected medium error corresponding to the current I/O request for the single 512 byte logical block to the RAID controller. The storage device disk controller may detect, but does not report, medium errors that exist within the seven other 512 byte logical blocks of the same 4096 byte physical block of the storage device. In step, 110, the RAID controller responds to the reported error by regenerating the data for the single 512 byte logical block with the error from a mirrored drive, or by using the parity information previously calculated and stored. The RAID controller then writes the regenerated data in step 112 for the single 512 byte having the detected error to the storage device, making the RAID stripe consistent. The disk controllers will reallocate the logical blocks to a different physical location while keeping the logical block address the same. Hence the data gets “corrected” while physically the data resides in a different location on the drive.